pub mod trait_add {
    #[derive(Debug)]
    pub struct Point {
        pub x: u16,
        pub y: u32
    }
    use std::ops::Add;
    impl Add for Point {
        type Output = Self;
        fn add(self, rhs: Self) -> Self::Output {
            return Point { x: self.x + rhs.x, y: self.y + rhs.y };
        }
    }
    // use std::string::String;// 根据孤儿原则，这行代码编译出错
    // impl Add for String {
    //     type Output = Self;
    //     fn add(self, rhs: Self) -> Self::Output {
    //         return self + rhs;
    //     }
    // }
}